El equipo de apoyo académico necesita una lista de matrículas activas cuyo rendimiento reciente ha disminuido. Compara a cada estudiante con su propio rendimiento anterior en el mismo curso.
Acuerda las reglas
- Usa dos periodos:
anterioryreciente. Cada uno tiene dos evaluaciones con la misma ponderación. - Requiere al menos dos puntuaciones no NULL en cada periodo antes de comparar los promedios.
- Calcula
decline_points = earlier_avg - recent_avg. - Una disminución de al menos 15 puntos significa Revisión. De lo contrario, una matrícula elegible tiene Sin alerta.
- Mantén Datos insuficientes por separado. Un cero es una puntuación válida; un NULL o un registro faltante no es un cero.
Prepara tu base de datos
Abre el archivo lab8_setup.sql de la carpeta del TA DSAI2202/lab8/ en pgAdmin y ejecuta el archivo completo. Vuelve a usar la configuración de conexión de la derecha siempre que abras una nueva conexión.
La configuración también proporciona performance_comparison, una consulta guardada llamada vista. Servirá de apoyo en ejercicios posteriores; no es una tabla adicional de resultados de evaluación almacenados.
SET search_path TO lab8;SET search_path TO lab8;
SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;SET search_path TO lab8;
SELECT e.enrolment_id, e.student_id, e.course_code,
r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;Verifica los recuentos de la configuración
| Tabla | Filas | Una fila representa |
|---|---|---|
| students | 18 | El perfil de un estudiante |
| courses | 4 | Un curso |
| enrolments | 24 | La matrícula de un estudiante en un curso |
| assessment_results | 92 | Un resultado de evaluación para una matrícula y un periodo |
| support_units | 7 | Una unidad de apoyo en el ejercicio opcional de jerarquía |
Hay 22 matrículas activas y 2 retiradas. La investigación final necesita una fila por matrícula activa, no una fila por evaluación ni una fila por estudiante en todos los cursos.
Cinco casos para rastrear
| Matrícula | Curso | Puntuaciones anteriores | Puntuaciones recientes | ¿Evidencia suficiente? |
|---|---|---|---|---|
| E01 | SQL101 | 80, 90 | 60, 70 | Sí |
| E07 | SQL101 | 80, NULL | 50, 50 | No: solo una puntuación anterior |
| E08 | SQL101 | 80, 80 | NULL, NULL | No: sin puntuaciones recientes calificadas |
| E09 | SQL101 | Sin filas | 60, 60 | No: falta el periodo anterior |
| E24 | STAT101 | 0, 0 | 0, 0 | Sí |
La consulta de inspección devuelve 18 filas de evaluación. E09 solo tiene dos filas; sus evaluaciones anteriores están ausentes. E08 tiene dos filas recientes, pero ninguna tiene una puntuación registrada.
Verifica los dos ejemplos elegibles
E01: promedio anterior 85, promedio reciente 65, disminución de 20 puntos → Revisión. E24: ambos promedios 0, disminución 0 → Sin alerta. Los otros tres ejemplos requieren la etiqueta Datos insuficientes.